# encoding: utf-8
# @File  : get_data.py
# @Author: wu shaofan
# @Date  :  2024/04/17
# @Desc : 获取data中的json数据，用于做数据驱动的参数
import json
import config


class CreateData:
    def __init__(self, json_name, data):
        self.data = data
        self.test_data = []
        self.test_data_len = None
        self.data_len = len(data)
        self.json_name = json_name

        file = config.BASE_DIR + r"/data/{}.json".format(json_name)
        with open(file, encoding="utf-8") as f:
            json_data = json.load(f)
            for i in json_data:
                for j in data:
                    bb = i.get(j)
                # 用data中的值当键，去获取json文件中键对应的值，让后添加到test_data空列表中
                    self.test_data.append(bb)
                # 统计test_data的长度，用于下一个方法列表拆分
            self.test_data_len = len(self.test_data)

    def build_data(self):
        # 定义空元祖，将test_data列表拆分，然后多个数据作为一组存放到元组中
        tup = ()
        # 两个相除，看能划分成几组，放到元祖中
        num = self.test_data_len / self.data_len

        # 写一个for循环每个循环就是将我们划分的元素作为一个整体
        for n in range(int(num)):
            server_info = list()
            for i in range(self.data_len):
                # 将原列表遍历到的元素删除并添加到新列表中
                server_info.append(self.test_data.pop(0))
            # 将新列表添加到元组中
            tup1 = (server_info,)
            # 循环执行，并将得到的元组相加
            tup = tup + tup1
            del server_info
        return tup

    def build_desc(self):
        test_desc = []
        file = config.BASE_DIR + r"/data/{}.json".format(self.json_name)

        with open(file, encoding="utf-8") as f:
            json_data = json.load(f)

            for case_data in json_data:
                desc = case_data.get("desc")
                test_desc.append(desc)

        return test_desc


if __name__ == '__main__':
    json_name = "login"
    data = ('username', 'pwd', 'code', 'expect')
    obj = CreateData(json_name, data)

    print(obj.build_data())
    print(obj.build_desc())
